﻿using System;
using System.Collections;
using System.Collections.Generic;
using System.Text;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using Microsoft.VisualBasic;
using System.Configuration;
using System.Data.SqlClient;
using System.Data;
using Code;
#pragma warning disable 436

public partial class Common_Register : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        txtMatKhau.Attributes.Add("value", txtMatKhau.Text);
        txtXacNhanMatKhau.Attributes.Add("value", txtXacNhanMatKhau.Text);
    }

    public string HashPassword(string pwd)
    {
        string hashedPwd = FormsAuthentication.HashPasswordForStoringInConfigFile(pwd, "sha1");
        return hashedPwd;
    }

    protected void CustomValidatorXacNhanKiTu_ServerValidate(object source, ServerValidateEventArgs args)
    {
        args.IsValid = true;
        ccJoin.ValidateCaptcha(txtMaXacNhanKiTu.Text);
        if (!ccJoin.UserValidated)
        {
            args.IsValid = false;
        }
    }

    protected void CustomValidatorXacNhanMatKhau_ServerValidate(object source, ServerValidateEventArgs args)
    {
        args.IsValid = true;
        if (txtMatKhau.Text.Length < 4)
        {
            CustomValidatorXacNhanMatKhau.Text = "Mật khẩu quá ngắn";
            args.IsValid = false;
        }
        else
        {
            if (txtMatKhau.Text != txtXacNhanMatKhau.Text)
            {
                CustomValidatorXacNhanMatKhau.Text = "Mật khẩu không trùng khớp!";
                args.IsValid = false;
            }
        }
    }

    protected void CustomValidatorXacNhanSoDienThoai_ServerValidate(object source, ServerValidateEventArgs args)
    {
        args.IsValid = true;

        if (txtDienThoai.Text.Length < 8)
            args.IsValid = false;
        else
        {
            for (int i = 0; i < txtDienThoai.Text.Length; i++)
            {
                if ((txtDienThoai.Text[i] < '0') || (txtDienThoai.Text[i] > '9'))
                {
                    args.IsValid = false;
                    break;
                }
            }
        }
    }

    public String ConvertToSqlDateTime(DateTime dt)
    {
        int day;
        int mounth;
        int year;
        int hour;
        int minute;
        int second;

        day = dt.Day;
        mounth = dt.Month;
        year = dt.Year;
        hour = dt.Hour;
        minute = dt.Minute;
        second = dt.Second;

        String str = mounth.ToString() + "/" + day.ToString() + "/" + year.ToString() + " " + hour.ToString() + ":" + minute.ToString() + ":" + second.ToString();
        return str;
    }

    protected void btnXacNhan_Click1(object sender, ImageClickEventArgs e)
    {
        MemberController memberController = new MemberController();
        if (CustomValidatorXacNhanKiTu.IsValid == true)
        {
            if (cbNoiQui.Checked == false)
            {
                WebMsgBox.Show("Bạn phải chấp nhận nội qui của website mới được đăng kí thành viên!");
            }
            else
            {
                if (memberController.CheckUsername(txtTenDangNhap.Text) == true)
                {
                    WebMsgBox.Show("Tên đăng nhập này đã có người sử dụng, vui lòng chọn tên đăng nhập khác!");
                }
                else
                {
                    if (memberController.CheckEmail(txtEmail.Text) == true)
                    {
                        WebMsgBox.Show("Email này đã có người sử dụng, vui lòng chọn email khác!");
                    }
                    else
                    {
                        MemberInfo member = new MemberInfo();
                        member.ID = memberController.GetInsertId();
                        member.MatKhau = HashPassword(txtMatKhau.Text);
                        member.Email = txtEmail.Text;
                        member.Ten = txtTenThat.Text;
                        member.DiaChi = txtDiaChi.Text;
                        if (dlGioiTinh.Text == "Nam")
                            member.GioiTinh = 0;
                        else
                            member.GioiTinh = 1;
                        DateTime ns = new DateTime(Convert.ToInt32(dlNam.Text), Convert.ToInt32(dlThang.Text), Convert.ToInt32(dlNgay.Text));
                        member.NgaySinh = ConvertToSqlDateTime(ns);
                        member.NgheNghiep = txtNgheNghiep.Text;
                        member.DienThoai = txtDienThoai.Text;
                        member.Diem = 0;
                        member.idLoaiNguoiDung = 3;
                        member.ThoiGianDangNhapTruoc = ConvertToSqlDateTime(DateTime.Now);
                        member.TenDangNhap = txtTenDangNhap.Text;

                        if (memberController.AddMember(member))
                        {
                            string url;
                            url = "SuccessfulRegister.aspx?username=" + txtTenDangNhap.Text;
                            Response.Redirect(url);
                        }
                        else
                        {
                            WebMsgBox.Show("Có lỗi khi thêm thành viên mới, xem lại các trường thông tin mà bạn nhập!");
                        }
                    }
                }
            }
        }
    }
}

public class WebMsgBox
{
    protected static Hashtable handlerPages = new Hashtable();
    private WebMsgBox()
    {
    }

    public static void Show(string Message)
    {
        if (!(handlerPages.Contains(HttpContext.Current.Handler)))
        {
            Page currentPage = (Page)HttpContext.Current.Handler;
            if (!((currentPage == null)))
            {
                Queue messageQueue = new Queue();
                messageQueue.Enqueue(Message);
                handlerPages.Add(HttpContext.Current.Handler, messageQueue);
                currentPage.Unload += new EventHandler(CurrentPageUnload);
            }
        }
        else
        {
            Queue queue = ((Queue)(handlerPages[HttpContext.Current.Handler]));
            queue.Enqueue(Message);
        }
    }
    private static void CurrentPageUnload(object sender, EventArgs e)
    {
        Queue queue = ((Queue)(handlerPages[HttpContext.Current.Handler]));
        if (queue != null)
        {
            StringBuilder builder = new StringBuilder();
            int iMsgCount = queue.Count;
            builder.Append("<script language='javascript'>");
            string sMsg;
            while ((iMsgCount > 0))
            {
                iMsgCount = iMsgCount - 1;
                sMsg = System.Convert.ToString(queue.Dequeue());
                sMsg = sMsg.Replace("\"", "'");
                builder.Append("alert( \"" + sMsg + "\" );");
            }
            builder.Append("</script>");
            handlerPages.Remove(HttpContext.Current.Handler);
            HttpContext.Current.Response.Write(builder.ToString());
        }
    } 
}
